package sun.superstring.homeautomationsystem;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 目标：用面向对象编程实现 智能家居控制系统
        // 某智能家居系统，可以让用户选择要控制的家用设备（吊灯、电视机、洗衣机、落地窗），并可以对它们进行打开或者关闭操作。
        // 角色：设备（吊灯、电视机、洗衣机、落地窗）
        // 功能：打开、关闭
        // 谁控制它们：智能控制系统（单例对象），控制调用 设备的开和关 。  —— 开和关是设备自己的，系统只是控制调用设备

        // 1、定义设备类，创建设备对象代表家里的设备
        // 2、准备这些设备对象，放到数组中，代表整个家庭的设备 ——家电数组
        JD [] jds = new JD[4];  // 多态
        jds[0] = new Lamp("小米吊灯",true);
        jds[1] = new TV("小米电视机",false);
        jds[2] = new WashMachine("美的洗衣机",true);
        jds[3] = new AirCondition("华为空调",false);

        // 3、为每个设备制定一个开和关的功能，定义一个接口，让JD实现开关功能
        // 4、创建智能控制系统对象，控制设备
        SmartHomeControl smartHomeControl = SmartHomeControl.getInstance();
        // 5.控制吊灯
//        smartHomeControl.control(jds[0]);
        // 6.提示用户操作。 a、展示全部设备的当前情况。 b、让用户选择哪一个操作
        // 打印全部设备的开和关的现状。
        while (true) {
            smartHomeControl.printAllStatus(jds);
            System.out.println("请选择要操作的设备：");
            Scanner sc = new Scanner(System.in);
            String index = sc.next();
            switch (index){
                case "1":
                    smartHomeControl.control(jds[0]);
                    break;
                case "2":
                    smartHomeControl.control(jds[1]);
                    break;
                case "3":
                    smartHomeControl.control(jds[2]);
                    break;
                case "4":
                    smartHomeControl.control(jds[3]);
                    break;
                case "exit":
                    System.out.println("退出app");
                    return ;
                default:
                    System.out.println("输入有误，请重新输入：");
            }
        }
    }
}
